asm
  ld sp,$FDFF
  end asm

#include "./library/smsrnd.bas"
#include "./library/smsdelay.bas"

dim eee as uinteger at $E010
dim seed as uinteger at $E012
dim ee0 as uinteger at $E014
dim ee1 as uinteger at $E016
dim ee2 as uinteger at $E018
dim ee3 as uinteger at $E01A
dim ee4 as uinteger at $E01C
dim ee5 as uinteger at $E01E
dim ex1 as uinteger at $E020
dim ey1 as uinteger at $E022
dim dx1 as uinteger at $E024
dim dy1 as uinteger at $E026


'-------------------------------------------------------------------------------------
'routines

sub blktigerputchar(txp1 as uinteger,typ1 as uinteger,tch1 as ubyte,tat1 as ubyte):
  poke $D000+typ1*32+txp1,tch1
  poke $D400+typ1*32+txp1,tat1
  end sub

sub blktigerputtile(txp1 as uinteger,typ1 as uinteger,tch1 as ubyte,tat1 as ubyte):
  dim tad1 as uinteger at $E000
  tad1=((txp1 band $0F)*2)+((typ1 band $0F)*32)+((txp1 band $30)*32)+((((txp1 band $40)/$40)bxor((typ1 band $10)/$10))*2048)
  poke $C000+tad1,tch1
  poke $C001+tad1,tat1
  end sub

sub blktigerpalette(tid1 as uinteger,tvl1 as uinteger): '- #RGB
  poke $D800+tid1,(tvl1 band $FF0)/$10
  poke $DC00+tid1,tvl1 band $000F
  end sub

sub blktigerscroll(txp1 as uinteger,typ1 as uinteger):
  out $08,txp1 band $FF
  out $09,int(txp1/$100)
  out $0A,typ1 band $FF
  out $0B,int(typ1/$100)
  end sub

sub blktigerputsprite():
  end sub


'-------------------------------------------------------------------------------------

seed=0
eee=0

for eee=0 to $3FF
  seed=smsrnd(seed)
  blktigerpalette(eee,seed)
  next

blktigerpalette($300,$000)
blktigerpalette($301,$555)
blktigerpalette($302,$AAA)
blktigerpalette($303,$FFF)

blktigerpalette($0,$F00)
blktigerpalette($5,$F50)
blktigerpalette($A,$FA0)
blktigerpalette($F,$FF0)


for ee2=2 to 5
  for ee1=2 to 5
    blktigerputtile(4+ee1,4+ee2,64,0)
    next:next

for ee2=2 to 29
  for ee1=0 to 31
    seed=smsrnd(seed):ee0=seed:seed=smsrnd(seed)
    blktigerputchar(ee1,ee2,seed band $3,ee0)
    next:next

for ee2=0 to 15
  for ee1=0 to 15
    blktigerputchar(15+ee1,13+ee2,ee2*16+ee1,0)
    next:next


ex1=8:ey1=8

eee=0
do
  blktigerputchar(ex1,ey1,eee,0)
  blktigerscroll(ex1 band 1023 ,ey1 band 1023)

  blktigerputchar(3,3,48+(eee mod 10),0)
  blktigerputchar(2,3,48+(int(eee/10) mod 10),0)
  blktigerputchar(1,3,48+(int(eee/100) mod 10),0)

  ee0=in($00) bxor 255
  blktigerputchar(3,5,48+(ee0 mod 10),0)
  blktigerputchar(2,5,48+(int(ee0/10) mod 10),0)
  blktigerputchar(1,5,48+(int(ee0/100) mod 10),0)

  ee0=in($01) bxor 255
  blktigerputchar(3,6,48+(ee0 mod 10),0)
  blktigerputchar(2,6,48+(int(ee0/10) mod 10),0)
  blktigerputchar(1,6,48+(int(ee0/100) mod 10),0)

  ex1=ex1+((ee0 band 1)/1)-((ee0 band 2)/2)
  ey1=ey1+((ee0 band 4)/4)-((ee0 band 8)/8)

  ee0=in($02) bxor 255
  blktigerputchar(3,7,48+(ee0 mod 10),0)
  blktigerputchar(2,7,48+(int(ee0/10) mod 10),0)
  blktigerputchar(1,7,48+(int(ee0/100) mod 10),0)

  ee0=in($03) bxor 255
  blktigerputchar(3,8,48+(ee0 mod 10),0)
  blktigerputchar(2,8,48+(int(ee0/10) mod 10),0)
  blktigerputchar(1,8,48+(int(ee0/100) mod 10),0)

  ee0=in($04) bxor 255
  blktigerputchar(3,9,48+(ee0 mod 10),0)
  blktigerputchar(2,9,48+(int(ee0/10) mod 10),0)
  blktigerputchar(1,9,48+(int(ee0/100) mod 10),0)

  eee=eee+1
  loop







do:loop

'-------------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------


seed=0

for eee=0 to $3FF
  seed=smsrnd(seed)
  blktigerpalette(eee,seed)
  next


do

for eee=$FE00 to $FFFF '- sprites
  seed=smsrnd(seed)
  poke eee,seed
  out $06,$FF
  next

for ee0=0 to 31
  for ee1=0 to 127
    seed=smsrnd(seed):ee2=seed:seed=smsrnd(seed)
    blktigerputtile(ee1,ee0,seed,ee2)
    out $06,$FF
    next:next

'for eee=0 to 255
'  blktigerscroll(eee,eee)
'  next

loop

'---------------------------------------------------------------------


do




'- 0..$FFF @$C000
for ee3=0 to 1
  for ee0=0 to 15
    for ee2=0 to 3
      for ee1=0 to 15
        eee=(ee3*2048)+(ee2*512)+(ee0*32)+(ee1*2)
        seed=smsrnd(seed)
        poke $C000+eee,seed
        seed=smsrnd(seed)
        poke $C001+eee,seed
        smsdelay(1000)
        next:next:next:next




loop






do

'- 0..$7FF @$C800 - tilemap 2/2
for ee0=0 to 15
  for ee2=0 to 3
    for ee1=0 to 15
      eee=(ee2*512)+(ee0*32)+(ee1*2)
      seed=smsrnd(seed)
      poke $C800+eee,seed
      seed=smsrnd(seed)
      poke $C801+eee,seed
      smsdelay(30000)
      next:next:next

loop




do

'- 0..$7FF @$C000 - tilemap 1/2
for ee0=0 to 15
  for ee2=0 to 3
    for ee1=0 to 15
      eee=(ee2*512)+(ee0*32)+(ee1*2)
      seed=smsrnd(seed)
      poke $C000+eee,seed
      seed=smsrnd(seed)
      poke $C001+eee,seed
      smsdelay(30000)
      next:next:next

loop







do

for eee=$C800 to $CFFF '- bg - tilemap 2/2
  seed=smsrnd(seed)
  poke eee,seed
  smsdelay(60000)
  smsdelay(60000)
  smsdelay(60000)
  next

loop






do

for eee=$C000 to $C7FF '- bg - tilemap 1/2
  seed=smsrnd(seed)
  poke eee,seed
  smsdelay(2000)
  next

for eee=$C800 to $CFFF '- bg - tilemap 2/2
  seed=smsrnd(seed)
  poke eee,seed
  smsdelay(2000)
  next

loop



do

for eee=0 to $3FF
  seed=smsrnd(seed)
  blktigerpalette(eee,seed)
  smsdelay(4000)
  next

loop




do

for eee=0 to $3FF '- palette
  seed=smsrnd(seed)
  poke $D800+eee,seed

  seed=smsrnd(seed)
  poke $DC00+eee,seed

  smsdelay(4000)
  next

loop

do



for eee=$D800 to $DBFF '- palette
  seed=smsrnd(seed)
  poke eee,seed
  smsdelay(3000)
  next

for eee=$DC00 to $DFFF '- palette
  seed=smsrnd(seed)
  poke eee,seed
  smsdelay(3000)
  next

loop
do


for eee=$D400 to $D7FF '- tx - at
  seed=smsrnd(seed)
  poke eee,seed
  smsdelay(1000)
  next

for eee=$D000 to $D3FF '- tx - ch
  seed=smsrnd(seed)
  poke eee,seed
  smsdelay(1000)
  next






for eee=$FE00 to $FFFF '- sprites
  seed=smsrnd(seed)
  poke eee,seed
  next

loop




'AM_RANGE(0x0000, 0x7fff) AM_ROM
'AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
'AM_RANGE(0xc000, 0xcfff) AM_READWRITE(blktiger_bgvideoram_r, blktiger_bgvideoram_w)
'AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(blktiger_txvideoram_w) AM_SHARE("txvideoram")
'AM_RANGE(0xd800, 0xdbff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
'AM_RANGE(0xdc00, 0xdfff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
'AM_RANGE(0xe000, 0xfdff) AM_RAM
'AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("spriteram")




do:loop

'----------------------------------------------------
'sub higemaruputchar(txp1 as uinteger, typ1 as uinteger,tch1 as ubyte, tat1 as ubyte):
'  poke $D000+(typ1*32)+txp1,tch1
'  poke $D400+(typ1*32)+txp1,tat1
'  end sub
'
'sub higemaruputsprite(tly1 as uinteger, txp1 as ubyte, typ1 as ubyte,tch1 as ubyte, tat1 as ubyte):
'  poke $D900+(tly1*16),tch1
'  poke $D904+(tly1*16),tat1
'  poke $D908+(tly1*16),typ1
'  poke $D90C+(tly1*16),txp1
'  end sub
'
'
'seed=0
'for ee2=$D000 to $D9FF
'  seed=smsrnd(seed)
'  poke ee2,seed
'  smsdelay(100)
'  next
'
'for ey1=0 to 15
'  for ex1=0 to 15
'    higemaruputchar(ex1+15,ey1+13,ey1*16+ex1,1)
'    next:next
'
'
'ex1=16:ey1=72
'
'eee=0
'do
'  ee0=peek($C000) bxor 255
'  higemaruputchar(2,3,48+((int(ee0/100))mod 10),3)
'  higemaruputchar(3,3,48+((int(ee0/10))mod 10),3)
'  higemaruputchar(4,3,48+((int(ee0/1))mod 10),3)
'
'  ex1=ex1+((ee0 band 1)/1)-((ee0 band 2)/2)
'  ey1=ey1+((ee0 band 4)/4)-((ee0 band 8)/8)
'
'
'
'  ee0=peek($C001) bxor 255
'  higemaruputchar(2,4,48+((int(ee0/100))mod 10),3)
'  higemaruputchar(3,4,48+((int(ee0/10))mod 10),3)
'  higemaruputchar(4,4,48+((int(ee0/1))mod 10),3)
'
'  ee0=peek($C002) bxor 255
'  higemaruputchar(2,5,48+((int(ee0/100))mod 10),3)
'  higemaruputchar(3,5,48+((int(ee0/10))mod 10),3)
'  higemaruputchar(4,5,48+((int(ee0/1))mod 10),3)
'
'  ee0=peek($C003) bxor 255
'  higemaruputchar(2,6,48+((int(ee0/100))mod 10),3)
'  higemaruputchar(3,6,48+((int(ee0/10))mod 10),3)
'  higemaruputchar(4,6,48+((int(ee0/1))mod 10),3)
'
'  ee0=peek($C004) bxor 255
'  higemaruputchar(2,7,48+((int(ee0/100))mod 10),3)
'  higemaruputchar(3,7,48+((int(ee0/10))mod 10),3)
'  higemaruputchar(4,7,48+((int(ee0/1))mod 10),3)
'
'  higemaruputsprite( 0,ex1+ 0,ey1+ 0,eee,0)
'  higemaruputsprite( 1,ex1+16,ey1+ 0,eee,0)
'  higemaruputsprite( 2,ex1+ 0,ey1+16,eee,0)
'  higemaruputsprite( 3,ex1+16,ey1+16,eee,0)
'  higemaruputsprite( 4,ex1+32,ey1+ 0,eee,0)
'  higemaruputsprite( 5,ex1+48,ey1+ 0,eee,0)
'  higemaruputsprite( 6,ex1+32,ey1+16,eee,0)
'  higemaruputsprite( 7,ex1+48,ey1+16,eee,0)
'  higemaruputsprite( 8,ex1+ 0,ey1+32,eee,0)
'  higemaruputsprite( 9,ex1+16,ey1+32,eee,0)
'  higemaruputsprite(10,ex1+ 0,ey1+48,eee,0)
'  higemaruputsprite(11,ex1+16,ey1+48,eee,0)
'  higemaruputsprite(12,ex1+32,ey1+32,eee,0)
'  higemaruputsprite(13,ex1+48,ey1+32,eee,0)
'  higemaruputsprite(14,ex1+32,ey1+48,eee,0)
'  higemaruputsprite(15,ex1+48,ey1+48,eee,0)
'
'
'
'
'  eee=eee+1
'  loop
'
''-------------------------------------------------------------------------------
''dim ee2 as uinteger at $4C06
''dim ee3 as uinteger at $4C08
''dim ee4 as ubyte at $4C0A
''dim ecsp as ubyte at $4C0C
''dim ecsq as ubyte at $4C0E
''
''dim ex0 as uinteger at $4C10
''dim ey0 as uinteger at $4C12
''dim ex1 as uinteger at $4C14
''dim ey1 as uinteger at $4C16
''dim ex2 as uinteger at $4C18
''dim ey2 as uinteger at $4C1A
''dim ex3 as uinteger at $4C1C
''dim ey3 as uinteger at $4C1E
''
''dim ex4 as uinteger at $4C20
''dim ey4 as uinteger at $4C22
''dim ex5 as uinteger at $4C24
''dim ey5 as uinteger at $4C26
''dim ex6 as uinteger at $4C28
''dim ey6 as uinteger at $4C2A
''dim ex7 as uinteger at $4C2C
''dim ey7 as uinteger at $4C2E
''
''dim ej0 as uinteger at $4C30
''dim ej1 as uinteger at $4C32
''
''function test1(t1 as uinteger,t2 as uinteger,t3 as uinteger,t4 as uinteger)  as uinteger
''  end function
''
''sub zpoke(t1 as uinteger,t2 as ubyte)
''  poke t1,t2
''  end sub
''
''sub putchar(tx1 as uinteger, ty1 as uinteger, tch1 as uinteger)
''  poke ($4000+(tx1*32)+ty1) bxor %0000001111100000,(tch1 band 255)
''  end sub
''
''pacmanputsprite(0,21,10,4,3)
''pacmanputsprite(1,21,30,4,3)
''pacmanputsprite(2,21,50,4,3)
''pacmanputsprite(3,21,70,4,3)
''pacmanputsprite(4,21,90,4,3)
''pacmanputsprite(5,21,110,4,3)
''pacmanputsprite(6,21,130,4,3)
''pacmanputsprite(7,21,150,4,3)
''
''seed=0
''
''poke $4300,code("*")
''poke $4200,code("*")
''poke $4100,code("*")
''
''poke $4010,code("0")
''poke $400F,code("1")
''poke $4030,code("2")
''poke $402F,code("3")
''
''poke $43D0,code("0")
''poke $43CF,code("1")
''poke $43F0,code("2")
''poke $43EF,code("3")
''
''for ee2=0 to 11
''  poke ($4000+((ee2+12)*32)+13) bxor %0000001111100000,peek(@text01+ee2)
''  next
''
''for ee2=0 to 11
''  poke ($4000+(0*32)+(ee2+12)) bxor %0000000000011111,peek(@text01+ee2)+64
''  next
''
''for ee2=0 to 11
''  poke ($4000+(31*32)+(ee2+12)) bxor %0000000000011111,peek(@text01+ee2)+128
''  next
''
''ee4=0
''for ee3=15 to 15+15
''  for ee2=12 to 12+15
''    poke ($4000+(ee2*32)+ee3) bxor %0000001111100000,ee4
''    ee4=ee4+1
''    next
''    next
''
''for ee2=22 to 25
''  for ee3=6 to 9
''    poke ($4000+(ee2*32)+ee3) bxor %0000001111100000,code("X")
''    next
''    next
''
''test1(377,2445,63888,2342)
''
''eee=$4207
''i=code("Q")
''poke eee,i
''eee=eee+1
''i=code("T")
''poke eee,i
''
''seed=0
''for eee=$4400 to $47FF
''  seed=smsrnd(seed)
''  poke eee,seed
''  next
''
''ex0=20:ey0=10
''ex1=20:ey1=30
''ex2=20:ey2=50
''ex3=20:ey3=70
''ex4=20:ey4=90
''ex5=20:ey5=110
''ex6=20:ey6=130
''ex7=20:ey7=150
''eee=0
''ecsp=0:ecsq=0
''
''do
''poke $50C0,255 '- watchdog? - it seems to work! thanks, Jim Bagley!!!!
''
''ej0=peek($5000) bxor $ff
''ej1=peek($5040) bxor $ff
''
''poke ($4000+(6*32)+20) bxor %0000001111100000,ej0
''poke ($4000+(7*32)+20) bxor %0000001111100000,ej1
''
''poke ($4000+(8*32)+22) bxor %0000001111100000,48+(ex0 mod 10)
''poke ($4000+(7*32)+22) bxor %0000001111100000,48+((int(ex0/10)) mod 10)
''poke ($4000+(6*32)+22) bxor %0000001111100000,48+((int(ex0/100)) mod 10)
''
''poke ($4000+(8*32)+23) bxor %0000001111100000,48+(ey0 mod 10)
''poke ($4000+(7*32)+23) bxor %0000001111100000,48+((int(ey0/10)) mod 10)
''poke ($4000+(6*32)+23) bxor %0000001111100000,48+((int(ey0/100)) mod 10)
''
''poke ($4000+(8*32)+24) bxor %0000001111100000,48+(eee mod 10)
''poke ($4000+(7*32)+24) bxor %0000001111100000,48+((int(eee/10)) mod 10)
''poke ($4000+(6*32)+24) bxor %0000001111100000,48+((int(eee/100)) mod 10)
''poke ($4000+(5*32)+24) bxor %0000001111100000,48+((int(eee/1000)) mod 10)
''poke ($4000+(4*32)+24) bxor %0000001111100000,48+((int(eee/10000)) mod 10)
''
''poke ($4000+(8*32)+25) bxor %0000001111100000,48+(ej0 mod 10)
''poke ($4000+(7*32)+25) bxor %0000001111100000,48+((int(ej0/10)) mod 10)
''poke ($4000+(6*32)+25) bxor %0000001111100000,48+((int(ej0/100)) mod 10)
''
''poke ($4000+(8*32)+26) bxor %0000001111100000,48+(ej1 mod 10)
''poke ($4000+(7*32)+26) bxor %0000001111100000,48+((int(ej1/10)) mod 10)
''poke ($4000+(6*32)+26) bxor %0000001111100000,48+((int(ej1/100)) mod 10)
''
''poke ($4000+(8*32)+27) bxor %0000001111100000,48+(ecsp mod 10)
''
''
''if ecsp=0 then:
''  if (ej0 band 1)<>0 then: ey0=ey0-1:end if
''  if (ej0 band 2)<>0 then: ex0=ex0-1:end if
''  if (ej0 band 4)<>0 then: ex0=ex0+1:end if
''  if (ej0 band 8)<>0 then: ey0=ey0+1:end if
''  end if
''
''if ecsp=1 then:
''  if (ej0 band 1)<>0 then: ey1=ey1-1:end if
''  if (ej0 band 2)<>0 then: ex1=ex1-1:end if
''  if (ej0 band 4)<>0 then: ex1=ex1+1:end if
''  if (ej0 band 8)<>0 then: ey1=ey1+1:end if
''  end if
''
''if ecsp=2 then:
''  if (ej0 band 1)<>0 then: ey2=ey2-1:end if
''  if (ej0 band 2)<>0 then: ex2=ex2-1:end if
''  if (ej0 band 4)<>0 then: ex2=ex2+1:end if
''  if (ej0 band 8)<>0 then: ey2=ey2+1:end if
''  end if
''
''if ecsp=3 then:
''  if (ej0 band 1)<>0 then: ey3=ey3-1:end if
''  if (ej0 band 2)<>0 then: ex3=ex3-1:end if
''  if (ej0 band 4)<>0 then: ex3=ex3+1:end if
''  if (ej0 band 8)<>0 then: ey3=ey3+1:end if
''  end if
''
''if ecsp=4 then:
''  if (ej0 band 1)<>0 then: ey4=ey4-1:end if
''  if (ej0 band 2)<>0 then: ex4=ex4-1:end if
''  if (ej0 band 4)<>0 then: ex4=ex4+1:end if
''  if (ej0 band 8)<>0 then: ey4=ey4+1:end if
''  end if
''
''if ecsp=5 then:
''  if (ej0 band 1)<>0 then: ey5=ey5-1:end if
''  if (ej0 band 2)<>0 then: ex5=ex5-1:end if
''  if (ej0 band 4)<>0 then: ex5=ex5+1:end if
''  if (ej0 band 8)<>0 then: ey5=ey5+1:end if
''  end if
''
''if ecsp=6 then:
''  if (ej0 band 1)<>0 then: ey6=ey6-1:end if
''  if (ej0 band 2)<>0 then: ex6=ex6-1:end if
''  if (ej0 band 4)<>0 then: ex6=ex6+1:end if
''  if (ej0 band 8)<>0 then: ey6=ey6+1:end if
''  end if
''
''if ecsp=7 then:
''  if (ej0 band 1)<>0 then: ey7=ey7-1:end if
''  if (ej0 band 2)<>0 then: ex7=ex7-1:end if
''  if (ej0 band 4)<>0 then: ex7=ex7+1:end if
''  if (ej0 band 8)<>0 then: ey7=ey7+1:end if
''  end if
''
''if (ej1 band 15)<>0 then: ecsq=ecsq+1:end if
''ecsp=(int(ecsq/4))mod 8
''
''ee3=int(eee/4)
''
''pacmanputsprite(0,ex0,ey0,4,3)  '- layer,x,y,id,clut
''pacmanputsprite(1,ex1,ey1,ee3,3)  '- layer,x,y,id,clut
''pacmanputsprite(2,ex2,ey2,4,ee3)  '- layer,x,y,id,clut
''pacmanputsprite(3,ex3,ey3,ee3,ee3)  '- layer,x,y,id,clut
''pacmanputsprite(4,ex4,ey4,4,3)  '- layer,x,y,id,clut
''pacmanputsprite(5,ex5,ey5,ee3,3)  '- layer,x,y,id,clut
''pacmanputsprite(6,ex6,ey6,4,ee3)  '- layer,x,y,id,clut
''pacmanputsprite(7,ex7,ey7,ee3,ee3)  '- layer,x,y,id,clut
''
''eee=eee+1
''loop
''
'''-------------------------------------------------------------------------------
''
''do
''loop
''
'''-------------------------------------------------------------------------------
''
''text01:
''asm
''  defb "HELLO WORLD!!!!!"
''  end asm
''
'''-------------------------------------------------------------------------------
''
''poke $5000,255
''
'''- this should put some characters on the pattern display area
''for i=0 to 255
''  poke $4040+i,i
''  poke $4440+i,i
''  next
''
''do
''loop
''
'''-------------------------------------------------------------------------------
''
''
''
